 
double geo_sum (double b, int d) {
	
	double s;
	int i;
	
	s= 1.0;
		
	for (i= 0; i<d; i++) {
		s = s * b + 1.0;
	}
	
	return s;
}



/*Esta funcion calcula el factor de ramificacion de una busqueda
 en la que se han expandido num_expanded nodos, y se ha alcanzado una 
 solucion a profundidad depth.  Note que depth debe ser no negativo, y 		
 num_expanded debe ser al menos depth+1.*/

double compute (long num_expanded, long depth) {

	/*Precision con la que se calcula la respuesta.*/
    double PRECISION = 0.00001;

	double n, b_lo, f_lo, b_hi, f_hi, b_mid, f_mid;


	if (num_expanded < depth + 1) {
	    printf ("num_expanded debe ser al menos depth + 1");
		exit(0);
	}

	if (depth < 0) {
	    printf ("depth debe ser no negativo");
		exit(0);
	}

	n = num_expanded;
	b_lo = 1.0;
	f_lo = 1.0 + depth;
	b_hi = b_lo;
	f_hi = f_lo;

	while (f_hi < n) {
	printf("primer bucle\n");
		b_hi = b_hi*2.;
	    f_hi = geo_sum(b_hi, depth);
	}

	while (b_hi - b_lo > PRECISION) {
	    b_mid = (b_hi + b_lo) * 0.5;
	    f_mid = geo_sum(b_mid, depth);
	
	
	if (f_mid > n) {
		b_hi = b_mid;
		f_hi = f_mid;
	} else {
		b_lo = b_mid;
		f_lo = f_mid;
	}
	}

	return (b_lo);
}
